Automated identification and tracking of objects has many applications, for example, in products using optical codes. Optical codes are patterns of elements with different light reflectance or emission, assembled in accordance with some predefined rules. A known optical code is the linear barcode used in different consumer products. A linear barcode includes bars or spaces in a linear fashion. Optical codes can also be two-dimensional. Linear and two-dimensional barcodes are generally called symbols. Two dimensional optical codes may include on/off patterns in a two-dimensional matrix code. Barcodes or symbols can be printed on labels placed on product packaging or directly on the products themselves.
The information encoded in a bar code or symbol can be decoded using optical readers in fixed-mount installations or in portable hand held devices. For example, in the case of a fixed-mount installation, a transfer line moves objects marked with codes or symbols in the range of a fixed-mount reader, which can generate images of the codes or symbols. Image-based reader devices typically include at least one camera capable of generating two dimensional images of a field of view (FOV). For example, many systems currently employ a two dimensional charge-coupled device (CCD) image sensor, which acquires images that are then received by a processor. The processor is programmed to examine image data to identify code candidates (e.g., bar code or symbol candidates) and decode those code candidates. Reader devices can be programmed to obtain images of a field-of-view (FOV) in rapid succession and to decode any obtained code candidates as quickly as possible. The processor runs one or more decode algorithms to decode the code candidates.
In fixed-mount installations, the optical reader can obtain a large number of images of the same object and applied code. The object and the applied code can be in different locations along the direction of travel through the FOV. In addition, some objects and applied codes in an image will be new to the FOV, for example, those that were located outside the FOV during previous images, and others will be exiting the FOV prior to the generation of a subsequent image.
When acquiring an image of a code, the quality of the image depends on several factors, for example, the angle of the reader with respect to a surface on which the code is applied, the material and texture of the surface on which the code is applied, the code marking quality or damage after marking, the ambient and device lighting characteristics, the distortion in the applied symbol, the transfer line speed, the distance from the surface on which the code is applied, the optical blur, camera resolution, sensor noise, motion blur (part motion during sensor exposure), etc. Image quality affects the ability of a processor running a specific algorithm to decode a code. For example, in many cases a simple decoding algorithm will not be able to successfully decode codes in an image unless the circumstances surrounding image acquisition are substantially ideal. In addition, the image might not include the entire code, but just fragments of it.